﻿#ifndef CorrectDevice_H
#define CorrectDevice_H
#include "IDevice.h"
#include "CModelMange.h"

class CorrectDevice :public IDevice
{
public:
    CorrectDevice(const QString &sDevGuid,const QString &sDevName,bool& bRet);
	// 虚析构，确保通过接口删除派生类时调用正确的析构函数
	~CorrectDevice();

	// 获取该设备的底层对象（可用于信号槽连接等）
	virtual QObject* getDeviceObject();

	// 启动设备，例如打开串口、初始化连接等
	virtual bool startDevice();

	// 停止设备，关闭资源
	virtual void stopDevice();

	//删除设备
	virtual void deleteDevice();

	// 向设备发送命令，命令格式由设备自行定义
	virtual bool controlDevice(const QString& cmd);

	// 获取当前设备状态（例如“运行中”、“故障”、“未连接”）
	virtual QString getDeviceStatus() const;

	// 获取设备支持的测点名称列表（如电压、电流、温度等）输出测点
	virtual QList<CMeasurePoint*> getMeasurePoints() const;
	// 设置报警区域（格式、含义由设备自定义）
	virtual void setAlarmArea(const QString& area);

	// 获取设备的运行日志或事件记录
	virtual QList<QString> getDeviceLogs() const;

	// 获取设备配置界面，用于参数设置等（返回 Qt 界面指针）
	virtual QWidget* getDeviceConfigUi();

	// 获取设备运行界面，用于展示实时数据、状态等
	virtual QWidget* getDeviceRunUi();

	// 获取设备缩略图界面，用于总览展示或轮播
	virtual QWidget* getDeviceThumbnailUi(int nId = 0);

	// 获取设备缩略图界面列表，用于总览展示或轮播
	virtual QVector<QWidget*> getDeviceUiList();

	// 获取设备输入测点列表,key:测点的唯一标识，value是测点地址
	virtual QMap<QString, QString> getInputPointList() ;

	// 设置设备输入测点列表
	virtual void setInputPointList(QMap<QString, CMeasurePoint*>vecInputPoint);

private:
	QString m_sDevGuid;//设备Guid
	CModelMange* m_pModelMange;//模块管理对象
};

#endif